package com.wits.platform.dao.custom;

import java.io.Serializable;
import java.util.List;
import java.util.Map;

import org.springframework.data.domain.Page;

import com.wits.platform.web.mvc.PageParam;


public interface BaseDaoCustom<T,ID extends Serializable> {

	/**
	 * 
	 * 利用反射更新
	 * 
	 * @param entityClass
	 * @param Id 实体主键
	 * @param fieldName 属性名称
	 * @param fieldValue 属性值
	 * 
	 * @throws Exception
	 */
	void updateField(Class<T> entityClass, Serializable Id,
			String fieldName, Object fieldValue) throws Exception;
	
	/**
	 * 利用反射更新
	 * @param entityClass
	 * @param Id 实体主键
	 * @param map(key:属性名,value:属性值)
	 * @throws Exception
	 */
	void updateField(Class<T> entityClass, Serializable Id, Map<String,Object> map) throws Exception;
	
	int executeUpdate(String hql,Object...paramList);
	
	int executeUpdateByNative(String sql,Object...paramList);
	
	Page<T> findPageByNative(Class<T> resultClass,String sql,PageParam pageParam,Object...params);
	
	List<T> findByNative(Class<T> resultClass,String sql,Object...params);
	
	List<T> find(Class<T> entityClass,String hql,Object...params);
	
	void clear();
	
	void flush();

}
